package com.whfc.fse.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fse.dto.FseCrawlerDTO;
import com.whfc.fse.dto.FseCrawlerDataDTO;
import com.whfc.fse.dto.FseCrawlerDataLogDTO;
import com.whfc.fse.dto.FseFvsDeviceDTO;
import com.whfc.fse.param.FseCrawlerAddParam;
import com.whfc.fse.param.FseCrawlerBindParam;
import com.whfc.fse.param.FseCrawlerEditParam;
import com.whfc.fse.param.FseFvsParam;

import java.util.Date;
import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021/10/30 17:01
 */
public interface FseCrawlerService {

    /**
     * 获取履带吊列表
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @param deptId   组织架构ID
     * @param keyword  搜索关键字
     * @param bindFlag 绑定状态
     * @param netState 网络状态
     * @return 履带吊列表
     * @throws BizException 业务异常
     */
    PageData<FseCrawlerDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword,
                                 Integer bindFlag, Integer netState) throws BizException;

    /**
     * 获取履带吊列表
     *
     * @param deptId   组织架构ID
     * @param bindFlag 绑定状态
     * @param netState 网络状态
     * @return 履带吊列表
     * @throws BizException 业务异常
     */
    ListData<FseCrawlerDTO> list(Integer deptId, Integer bindFlag, Integer netState) throws BizException;

    /**
     * 获取履带吊详情
     *
     * @param crawlerId 履带吊ID
     * @return 履带吊详情
     * @throws BizException 业务异常
     */
    FseCrawlerDTO detail(Integer crawlerId) throws BizException;

    /**
     * 添加履带吊
     *
     * @param request 参数
     * @throws BizException 业务异常
     */
    void add(FseCrawlerAddParam request) throws BizException;

    /**
     * 修改履带吊
     *
     * @param request 参数
     * @throws BizException 业务异常
     */
    void edit(FseCrawlerEditParam request) throws BizException;

    /**
     * 删除履带吊
     *
     * @param crawlerId 履带吊ID
     * @throws BizException 业务异常
     */
    void del(Integer crawlerId) throws BizException;

    /**
     * 更新绑定状态
     *
     * @param request 参数
     * @throws BizException 业务异常
     */
    void updateBindState(FseCrawlerBindParam request) throws BizException;

    /**
     * 获取履带吊最新数据
     *
     * @param crawlerId 履带吊ID
     * @return 履带吊最新数据
     * @throws BizException 业务异常
     */
    FseCrawlerDataDTO getLatest(Integer crawlerId) throws BizException;

    /**
     * 获取履带吊历史数据
     *
     * @param crawlerId 履带吊ID
     * @param date      日期
     * @return 履带吊历史数据
     * @throws BizException 业务异常
     */
    List<FseCrawlerDataLogDTO> getCrawlerLog(Integer crawlerId, Date date) throws BizException;

    /**
     * 获取履带吊历史数据
     *
     * @param crawlerId
     * @param date
     * @param field
     * @return
     * @throws BizException
     */
    List<FseCrawlerDataLogDTO> getCrawlerLog(Integer crawlerId, Date date, String field) throws BizException;

    /**
     * 获取视频监控设备ID列表
     *
     * @param crawlerId 履带吊ID
     * @return 视频监控设备ID列表
     * @throws BizException 业务异常
     */
    List<FseFvsDeviceDTO> getFvsDeviceList(Integer crawlerId) throws BizException;

    /**
     * 绑定视频监控设备
     *
     * @param param 请求参数
     * @throws BizException 业务异常
     */
    void bindFvs(FseFvsParam param) throws BizException;


}
